ГПОУ ТО "ДКИТ"

ПРИМЕРЫ РЕАЛИЗАЦИИ ПРОГРАММНОГО ПРИЛОЖЕНИЯ

Для организации взаимодействия прикладных процессов в современных вычислительных, компьютерных сетях различного уровня и масштаба необходимо использовать сетевые протоколы [14, 15, 16, 17].

Определение 1. Протоколом называется набор правил для одной из коммуникационных функций.

Определение 2. Протокол - это набор синтаксических и семантических правил, в соответствии с которыми осуществляется взаимодействие процессов одного уровня в сети.

Определение 3. Стек протоколов представляет собой набор организованных по уровням протоколов, которые, работая совместно, позволяют приложениям обмениваться данными.

Определение 4. Набор протоколов - это семейство протоколов, работающий совместно и связанных между собой. Набор протоколов TCP/IP обеспечивает множество различных возможностей, начиная от динамического определения адреса сетевого адаптера и заканчивая службой каталогов, определяющей способ доставки сообщения электронной почты.

Определение 5. Хостом называется компьютер, который выполняет приложения и имеет одного или нескольких пользователей. Поддерживающий TCP/IP хост, работает как конечная точка сетевой коммуникации.

Пример создания клиент-серверного приложения на основе потокового сокета.

Для начала разработки подключите к проекту библиотеку ws2_32.1ib (в MVC++12.0: Project -> Settings -> Link -> Object/library modules, необходимо обязательно в конце строки дописать). Подключите используемый файл winsock2.h:

#include

До начала использования функций WinSock необходимо выполнить инициализацию WinSock.

WSADATA WSAData; // После инициализации содерж инф. о WinSock

if (WSAStartup (MAKEWORD(2,1), &WSAData) != 0)

{ printf ("WSAStartup faild. Error: %d", WSAGetLastError ()); return FALSE;

}

Приложение СЕРВЕР

Откройте сокет при помощи socket функции.

Используйте AF_INET (семейство интернет протоколов) дня формата адреса (address format) и SOCK_STREAM (потоковый сокет) для типа используемого сокета (type parameter.)

Пример открытия сокета.

int WinSocket;

if ((WinSocket = socket (AF_INET, SOCK_STREAM, 0)) ==

INVALID_SOCKET)

{

printf ("Allocating socket failed. Error: %d", WSAGetLastError () ) ; return -1;

}

Установление соединения с клиентом accept функцией. Потоковый сокет TCP использует функцию accept дня приема запроса на соединение от клиента и именования данного соединения между клиентом и сервером. Функция accept создает новый сокет. Исходный сокет используется сервером дня прослушивания запросов на соединение от клиентов.

printf("Waiting connect from client. "); int ClientSock;

accept_sin_len = sizeof (accept_sin);

// Accept an incoming connection attempt on WinSocket. ClientSock = accept (WinSocket,

(struct sockaddr *)

&accept_sin,

(int *) &accept_sin_len);

// Stop listening for connections from clients, closesocket (WinSocket);

if (ClientSock == INVALID_SOCKET)

{

printf ("Accepting connection with client failed. Error: %d", WSAGetLastError ()); return FALSE;

}